// 存放主要交互逻辑js代码 

//获取路径
var pathName = window.document.location.pathname;
//截取，得到项目名称
var projectName = pathName.substring(0,pathName.substr(1).indexOf('/')+1);
	
//特别注意：以下写法为javascript模块化 
var seckill = { 
		
	// ************* 封装秒杀相关ajax的url ***************
	URL:{ 
		now : function(){   //获取系统时间的url
			return projectName + '/seckill/time/now'; 
		}, 
		exposer : function (seckillId) {   //获取暴露地址url
			return projectName + '/seckill/'+seckillId+'/exposer'; 
		}, 
		execution : function (seckillId,md5) {   //执行秒杀url
			return projectName + '/seckill/'+seckillId+'/'+md5+'/execution'; 
		} 
	}, 
	
	// ************* 处理秒杀逻辑 *****************
	// 获取秒杀地址，控制显示逻辑，执行秒杀 
	handleSeckill : function (seckillId,node) { 
		// 显示开始秒杀按钮
		node.hide()
			.html('<button class="btn btn-primary btn-lg" id="killBtn">开始秒杀</button>');
		// 向服务器请求秒杀地址
		$.post(seckill.URL.exposer(seckillId),{},function (result) { 
			// 在回调函数中，执行交互流程 
			if(result && result['success']){ 
				var exposer = result['data']; 
				if(exposer['exposed']){  // 开启秒杀
					// one()的作用绑定一次点击事件 
					$('#killBtn').one('click',function () { 
						// 获取秒杀地址 
						var md5 = exposer['md5']; 
						var killUrl = seckill.URL.execution(seckillId,md5); 
						console.log("killUrl:"+killUrl); 
						
						// 执行秒杀请求 
						// 1：先禁用按钮 
						$(this).addClass('disabled'); 
						// 2：发送秒杀请求
						$.post(killUrl,{},function(result){ 
							if(result && result['success']){ 
								var killResult = result['data']; 
								var state = killResult['state']; 
								var stateInfo = killResult['stateInfo']; 
								
								// 3：显示秒杀结果
								node.html('<span class="label label-success">'+stateInfo+'</span>'); 
							} 
						}); 
					}); 
					node.show(); 
				} else { // 未开启秒杀
					var now = exposer['now']; 
					var start = exposer['start']; 
					var end = exposer['end']; 
					// 重新计算计时逻辑 
					seckill.mycountdown(seckillId,now,start,end); 
				} 
			}else{ 
				console.log('result:'+result);    //在浏览器的Console中输出错误信息
			} 
		}); 
	}, 

	// ************* 验证手机号 ***************
	validatePhone:function (phone) {
		//phone 代表存在
		//phone.length == 11 代表phone长度为11位
		//isNaN() 检查参数是否为非数字
		if(phone && phone.length == 11 && !isNaN(phone)){ 
			return true; 
		}else{ 
			return false; 
		} 
	}, 
	
	// ***************** 时间倒计时 *******************
	mycountdown : function(seckillId,nowTime,startTime,endTime){ 
		//找到秒杀时间显示区域
		var seckillBox = $('#seckill-box'); 
		// ************* 时间判断逻辑 ***************
		if(nowTime > endTime){   // 秒杀结束 
			seckillBox.html('秒杀结束！'); 
		} else if(nowTime < startTime){   // 秒杀未开始
			var seckillTime = new Date(startTime + 1000); 
			// 调用countdown方法，显示秒杀倒计时
			seckillBox.countdown(seckillTime,function(event){ 
				// 时间格式 
				var format = event.strftime('秒杀倒计时： %D天 %H时 %M分 %S秒'); 
				seckillBox.html(format); 
			}).on('finish.countdown',function () {   // 时间完成后回调时间 
				seckill.handleSeckill(seckillId,seckillBox);
			}); 
		}else { // 秒杀开始 
			seckill.handleSeckill(seckillId,seckillBox); 
		} 
	}, 
	
	// **************** 详情页秒杀逻辑 ******************
	detail:{ 
		// 详情页初始化 
		init : function (params) {
			// ************ 手机号验证逻辑 ***********
			// 从cookie中查找手机号
			var killPhone = $.cookie('killPhone'); 
			// 验证手机号 
			if(!seckill.validatePhone(killPhone)){ 
				// 找到输入手机号的弹出层
				var killPhoneModal = $('#killPhoneModal'); 
				// 显示输入手机号的弹出层 
				killPhoneModal.modal({ 
					show:true,           //显示弹出层 
					backdrop:'static',   // 禁止位置关闭，即点击弹出框其他位置时，不关闭弹出框
					keyboard:false       // 关闭键盘事件，没有关闭按钮
				}); 
				
				// 找到秒杀按钮，并在按钮上进行点击操作
				$('#killPhoneBtn').click(function(){ 
					//找到手机号输入框
					var inputPhone = $('#killPhoneKey').val(); 
					console.log('inputPhone='+inputPhone);   //在浏览器的控制台显示输入的手机号
					
					if(!seckill.validatePhone(killPhone)){ 
						//$.cookie('killPhone',inputPhone,{expires:7});    //expires:7 代表有效期是7天
						$.cookie('killPhone',inputPhone,{expires:7,path: projectName+'/seckill'});   //path:'/seckill' 代表只在seckill模块下有效
						// 刷新页面 
						window.location.reload(); 
					} else { 
						// 显示错误消息
						$('#killPhoneMessage').hide().html('<label class="label label-danger">手机号错误！</label>').show(300); 
					} 
				}); 
			} 
			
			// 已经登录
			// ************** 计时交互逻辑 *************
			var startTime = params['startTime']; 
			var endTime = params['endTime']; 
			var seckillId = params['seckillId']; 
			// 向服务器请求服务器此刻时间
			$.get(seckill.URL.now(),{},function(result){ 
				if(result &&result['success']){ 
					var nowTime = result['data']; 
					// 调用js的countdown模块，显示秒杀倒计时
					seckill.mycountdown(seckillId,nowTime,startTime,endTime); 
				}else{ 
					console.log('result:'+result); //在浏览器的Console中输出错误信息
				} 
			}); 
		} 
	} 
}